package user;

import book.BookList;
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils;
import operation.IOPeration;

/**
 * @ClassDescription:
 * @JdkVersion: 1.8
 * @Author: 李白
 * @Created: 2024/7/29 22:24
 */
public abstract class User {//使用抽象类，其方法均为抽象方法，需要继承的子类重写方法，实现功能
    protected String name;
    protected IOPeration[] ioPerations;//因为每种操作都实现了IOPeration接口，重写了其中的方法，每种方法对应这一个操作
    //所以要表示这几种方法，只需要创建一个数组，用来容纳这些方法
    //故用IOPeration类来创建最为合适，给每种操作一个下标，然后利用对象来调用这个方法（操作）即可


    //构造方法，给成员变量赋值
    public User(String name) {
        this.name = name;
    }
    public abstract int menu();
    public void doOperation(int choice, BookList bookList){
        ioPerations[choice].work(bookList);//choice与菜单中对应的操作序号相对应，所以便通过choice来选择对应的操作的对应数组
    }
}
